/**
 * @(#)SueldoK.java Jan 15, 2007
 *
 * Copyright (c) 2005-2010 Psiqueware S.A. de C.V. All Rights Reserved.
 * This software is the proprietary information Psiqueware S.A. de C.V.
 * Use is subject to license terms.
 *
 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
 * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
 * IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * <br/>Usuario : Psique
 * <br/>Creaci&oacute;n: Jan 15, 2007 - 9:23:10 AM
 * <br/>
 * <br/>
 * <br/><t5>Cambios :</t5>
 * <br/><b>Fecha | Autor  |  Cambios</b>
 * <ul>
 * <li>Jan 15, 2007 | <a href = "mailto:AngelElectrico@PsiqueWare.com">Psique</a> | Creaci&oacute;n del Objeto.</li>
 *
 * </ul>
 */

package com.psiqueware.jazmin.empresas.recursos.humanos.modelo;

import com.psiqueware.alheli.basico.BaseObject;
import com.psiqueware.jazmin.empresas.recursos.humanos.RazonSueldo;
import com.psiqueware.jazmin.empresas.recursos.humanos.Sueldo;

import java.math.BigDecimal;
import java.util.Locale;

/**
 * Cantidad que se paga por el {@link Empleado}.
 * <p/>
 * <br/>Paquete Original: com.psiqueware.tulipan.empresas.modelo
 * <br/>Nombre  Original: SueldoK
 * <br/>Oprima para ver : <a href="SueldoK.java.html"><i>C&oacute;digo Fuente</i> </a>
 *
 * @author <a href="mailto:AngelElectrico@PsiqueWare.com">Psique</a>
 * @version Revision: 1.1 Jan 15, 2007 9:23:10 AM
 * @noinspection ClassWithoutLogger
 */
public class SueldoK extends BaseObject implements Sueldo
{

    /** {@link RazonSueldo} por la que se asigno esta cantidad. */
    private RazonSueldo m_razon;

    /** cantidad de dinero percibida mensualmente. */
    private BigDecimal m_cantidad;

    /** Localidad a la que pertenece este {@link Sueldo}. */
    private Locale m_locale;

    /** Constructor de SueldoK. */
    public SueldoK ()
    {

    }

    /**
     * Constructor de SueldoK con par&aacute;metros.
     *
     * @param cantidadMensual    que constituye el pago mensual. No puede ser <code>null</code>.
     * @param razonSueldo para otorgar el {@link Sueldo}.
     * @param locale      localidad a la que pertenece este {@link Sueldo}.
     */
    public SueldoK ( final BigDecimal cantidadMensual, final RazonSueldo razonSueldo, final Locale locale )
    {
        m_cantidad = cantidadMensual;
        m_razon = razonSueldo;
        m_locale = locale;
    }


    /**
     * Devuelve el cantidad de dinero percibida mensualmente.
     *
     * @return valor de 'cantidad'.
     *
     * @see BigDecimal
     */
    public BigDecimal getCantidadMensual ()
    {
        return m_cantidad;
    }

    /**
     * Establece el cantidad de dinero percibida mensualmente.
     *
     * @param cantidad nuevo valor para 'cantidad'.
     *
     * @see BigDecimal
     */
    public void setCantidadMensual ( final BigDecimal cantidad )
    {
        m_cantidad = cantidad;
    }

    /**
     * Devuelve el cantidad de dinero percibida mensualmente.
     *
     * @return valor de 'cantidad'.
     *
     * @see BigDecimal
     */
    public BigDecimal getCantidadQuincenal ()
    {
        return m_cantidad.divide ( new BigDecimal(2));
    }

    /**
     * Establece el cantidad de dinero percibida mensualmente.
     *
     * @param cantidad nuevo valor para 'cantidad'.
     *
     * @see BigDecimal
     */
    public void setCantidadQuincenal ( final BigDecimal cantidad )
    {
        m_cantidad = cantidad.multiply ( new BigDecimal ( 2));
    }

    /**
     * Devuelve el {@link RazonSueldo} por la que se asigno esta cantidad.
     *
     * @return valor de 'razon'.
     *
     * @see RazonSueldoK
     */
    public RazonSueldo getRazon ()
    {
        return m_razon;
    }

    /**
     * Establece el {@link RazonSueldo} por la que se asigno esta cantidad.
     *
     * @param razon nuevo valor para 'razon'.
     *
     * @see RazonSueldoK
     */
    public void setRazon ( final RazonSueldo razon )
    {
        m_razon = razon;
    }

    /**
     * Devuelve el Localidad a la que pertenece este {@link Sueldo}.
     *
     * @return valor de 'locale'.
     *
     * @see Locale
     */
    public Locale getLocale ()
    {
        return m_locale;
    }

    /**
     * Establece el Localidad a la que pertenece este {@link Sueldo}.
     *
     * @param locale nuevo valor para 'locale'.
     *
     * @see Locale
     */
    public void setLocale ( final Locale locale )
    {
        m_locale = locale;
    }

    /**
     * Convierte este {@link Sueldo} a su representación textual.
     *
     * @noinspection DuplicateStringLiteralInspection,HardCodedStringLiteral,HardcodedLineSeparator
     */
    public String toString ()
    {
        StringBuilder sb = new StringBuilder ();
        sb.append ( "<Instance Class = '" ).append ( this.getClass ().getCanonicalName () ).append ( "'>" );
        sb.append ( "<razon>" ).append ( m_razon ).append ( "</razon> " );
        sb.append ( "<cantidad>" ).append ( m_cantidad ).append ( "</cantidad> " );
        sb.append ( "<locale>" ).append ( m_locale ).append ( "</locale> " );
        sb.append ( "</Instance>" );
        return sb.toString ();
    }
}

